/*
 * DCA compatible decoder - huffman tables
 * Copyright (C) 2004 Gildas Bazin
 * Copyright (C) 2007 Konstantin Shishkov
 *
 * This file is part of FFmpeg.
 *
 * FFmpeg is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * FFmpeg is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with FFmpeg; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 */

#include <stddef.h>

#include "libavutil/macros.h"

#include "dcadata.h"
#include "dcahuff.h"

static const uint8_t bitalloc_12_vlc_bits[DCA_BITALLOC_12_COUNT] = {
    9, 7, 7, 9, 9
};

#define SCALES_VLC_BITS 9
static const uint8_t tnl_grp_sizes[] = { 37, 34, 31, 28, 23 };

const uint8_t ff_dca_bitalloc_sizes[DCA_CODE_BOOKS] = {
    3, 5, 7, 9, 13, 17, 25, 33, 65, 129
};

const int8_t ff_dca_bitalloc_offsets[DCA_CODE_BOOKS] = {
    -1, -2, -3, -4, -6, -8, -12, -16, -32, -64
};

static const uint8_t bitalloc_maxbits[DCA_CODE_BOOKS][7] = {
    { 2 },
    { 4, 3, 3 },
    { 5, 5, 4 },
    { 6, 5, 6 },
    { 7, 6, 5 },
    { 9, 8, 7, 9, 8, 8, 8 },
    { 9, 9, 8, 9, 8, 9, 9 },
    { 9, 9, 9, 9, 9, 9, 9 },
    { 9, 9, 9, 9, 9, 9, 9 },
    { 9, 9, 9, 9, 9, 9, 9 }
};

const uint8_t ff_dca_vlc_src_tables[][2] = {
    /* bitalloc_3 - 3 entries */
    {   1,   1 }, {   2,   2 }, {   0,   2 },
    /* bitalloc_5_a - 5 entries */
    {   2,   1 }, {   3,   2 }, {   1,   3 }, {   4,   4 }, {   0,   4 },
    /* bitalloc_5_b - 5 entries */
    {   3,   2 }, {   1,   2 }, {   2,   2 }, {   4,   3 }, {   0,   3 },
    /* bitalloc_5_c - 5 entries */
    {   2,   1 }, {   3,   3 }, {   1,   3 }, {   4,   3 }, {   0,   3 },
    /* bitalloc_7_a - 7 entries */
    {   3,   1 }, {   5,   3 }, {   2,   3 }, {   4,   3 }, {   1,   4 },
    {   0,   5 }, {   6,   5 },
    /* bitalloc_7_b - 7 entries */
    {   2,   2 }, {   4,   2 }, {   5,   3 }, {   0,   5 }, {   6,   5 },
    {   1,   4 }, {   3,   2 },
    /* bitalloc_7_c - 7 entries */
    {   0,   4 }, {   6,   4 }, {   1,   4 }, {   5,   4 }, {   2,   2 },
    {   4,   2 }, {   3,   2 },
    /* bitalloc_9_a - 9 entries */
    {   4,   1 }, {   7,   4 }, {   2,   4 }, {   3,   3 }, {   0,   6 },
    {   8,   6 }, {   1,   5 }, {   6,   4 }, {   5,   3 },
    /* bitalloc_9_b - 9 entries */
    {   5,   2 }, {   2,   3 }, {   6,   3 }, {   4,   2 }, {   0,   5 },
    {   8,   5 }, {   1,   5 }, {   7,   5 }, {   3,   3 },
    /* bitalloc_9_c - 9 entries */
    {   5,   2 }, {   2,   3 }, {   7,   4 }, {   0,   6 }, {   8,   6 },
    {   1,   5 }, {   4,   2 }, {   6,   3 }, {   3,   3 },
    /* bitalloc_13_a - 13 entries */
    {   6,   1 }, {   7,   3 }, {   9,   4 }, {  10,   5 }, {   1,   6 },
    {  11,   6 }, {   4,   4 }, {   8,   4 }, {   0,   7 }, {  12,   7 },
    {   2,   6 }, {   3,   5 }, {   5,   4 },
    /* bitalloc_13_b - 13 entries */
    {   6,   2 }, {   8,   3 }, {  10,   4 }, {   3,   4 }, {   1,   5 },
    {  11,   5 }, {   9,   4 }, {   5,   3 }, {   7,   3 }, {   0,   6 },
    {  12,   6 }, {   2,   5 }, {   4,   4 },
    /* bitalloc_13_c - 13 entries */
    {   4,   3 }, {   0,   5 }, {  12,   5 }, {   2,   4 }, {   8,   3 },
    {   5,   3 }, {   7,   3 }, {   6,   3 }, {  10,   4 }, {   1,   5 },
    {  11,   5 }, {   3,   4 }, {   9,   4 },
    /* bitalloc_17_a - 17 entries */
    {  12,   4 }, {  13,   6 }, {  14,   8 }, {  15,  10 }, {   0,  12 },
    {  16,  12 }, {   1,  11 }, {   2,   9 }, {   3,   7 }, {   4,   5 },
    {   6,   3 }, {   8,   2 }, {  10,   3 }, {   5,   4 }, {  11,   4 },
    {   7,   3 }, {   9,   3 },
    /* bitalloc_17_b - 17 entries */
    {   8,   2 }, {  10,   3 }, {  15,   6 }, {   2,   6 }, {   3,   5 },
    {  13,   5 }, {  14,   6 }, {   0,   8 }, {  16,   8 }, {   1,   7 },
    {   5,   4 }, {  11,   4 }, {   7,   3 }, {   9,   3 }, {   4,   5 },
    {  12,   5 }, {   6,   4 },
    /* bitalloc_17_c - 17 entries */
    {  10,   3 }, {  15,   5 }, {   2,   5 }, {   4,   4 }, {  12,   4 },
    {  14,   5 }, {   0,   7 }, {  16,   7 }, {   1,   6 }, {   7,   3 },
    {   9,   3 }, {   5,   4 }, {  11,   4 }, {   8,   3 }, {   3,   5 },
    {  13,   5 }, {   6,   4 },
    /* bitalloc_17_d - 17 entries */
    {   8,   1 }, {   0,   9 }, {  16,   9 }, {   1,   9 }, {  15,   9 },
    {   2,   8 }, {  14,   8 }, {   3,   7 }, {  13,   7 }, {   4,   6 },
    {  12,   6 }, {   5,   5 }, {  11,   5 }, {   6,   4 }, {  10,   4 },
    {   7,   3 }, {   9,   3 },
    /* bitalloc_17_e - 17 entries */
    {   8,   1 }, {   7,   3 }, {   9,   3 }, {  10,   4 }, {   3,   6 },
    {  13,   6 }, {   5,   5 }, {  11,   5 }, {   0,   8 }, {  16,   8 },
    {   2,   7 }, {   4,   6 }, {  12,   6 }, {  14,   7 }, {   1,   8 },
    {  15,   8 }, {   6,   5 },
    /* bitalloc_17_f - 17 entries */
    {  15,   6 }, {   0,   8 }, {  16,   8 }, {   1,   7 }, {   3,   5 },
    {   4,   4 }, {   6,   3 }, {  10,   3 }, {  12,   4 }, {  13,   5 },
    {   2,   6 }, {  14,   6 }, {   7,   3 }, {   9,   3 }, {   8,   3 },
    {   5,   4 }, {  11,   4 },
    /* bitalloc_17_g - 17 entries */
    {   6,   3 }, {  10,   3 }, {   5,   4 }, {  11,   4 }, {   0,   8 },
    {  16,   8 }, {   2,   7 }, {   3,   6 }, {   4,   5 }, {  12,   5 },
    {  13,   6 }, {  14,   7 }, {   1,   8 }, {  15,   8 }, {   8,   2 },
    {   7,   3 }, {   9,   3 },
    /* bitalloc_25_a - 25 entries */
    {  10,   3 }, {  14,   3 }, {   8,   4 }, {  16,   4 }, {  11,   3 },
    {  13,   3 }, {  21,   8 }, {  22,  10 }, {  23,  12 }, {   0,  14 },
    {  24,  14 }, {   1,  13 }, {   2,  11 }, {   3,   9 }, {   4,   8 },
    {  20,   8 }, {   5,   7 }, {  19,   7 }, {   7,   5 }, {  17,   5 },
    {   6,   6 }, {  18,   6 }, {  12,   3 }, {   9,   4 }, {  15,   4 },
    /* bitalloc_25_b - 25 entries */
    {   3,   6 }, {  21,   6 }, {  23,   7 }, {   2,   7 }, {  22,   7 },
    {   0,   9 }, {  24,   9 }, {   1,   8 }, {   8,   4 }, {  11,   3 },
    {  13,   3 }, {  16,   4 }, {   6,   5 }, {  18,   5 }, {   9,   4 },
    {  15,   4 }, {  12,   3 }, {   4,   6 }, {  20,   6 }, {   7,   5 },
    {  17,   5 }, {   5,   6 }, {  19,   6 }, {  10,   4 }, {  14,   4 },
    /* bitalloc_25_c - 25 entries */
    {   7,   4 }, {  17,   4 }, {  12,   3 }, {  20,   5 }, {  22,   6 },
    {   0,   8 }, {  24,   8 }, {   1,   7 }, {   8,   4 }, {  16,   4 },
    {   5,   5 }, {  19,   5 }, {   9,   4 }, {  15,   4 }, {   3,   6 },
    {  21,   6 }, {   6,   5 }, {  10,   4 }, {  14,   4 }, {  18,   5 },
    {  23,   7 }, {   2,   7 }, {   4,   6 }, {  11,   4 }, {  13,   4 },
    /* bitalloc_25_d - 25 entries */
    {  10,   3 }, {  14,   3 }, {   9,   4 }, {  15,   4 }, {   8,   5 },
    {  16,   5 }, {   7,   6 }, {  17,   6 }, {   0,  12 }, {  24,  12 },
    {   1,  12 }, {  23,  12 }, {   2,  11 }, {  22,  11 }, {   3,  10 },
    {  21,  10 }, {   5,   8 }, {   6,   7 }, {  18,   7 }, {  19,   8 },
    {   4,   9 }, {  20,   9 }, {  12,   2 }, {  11,   3 }, {  13,   3 },
    /* bitalloc_25_e - 25 entries */
    {   9,   4 }, {  15,   4 }, {   7,   5 }, {  17,   5 }, {   2,   7 },
    {  22,   7 }, {   5,   6 }, {  19,   6 }, {   0,   8 }, {  24,   8 },
    {   3,   7 }, {  11,   3 }, {  13,   3 }, {   8,   5 }, {  16,   5 },
    {  21,   7 }, {   1,   8 }, {  23,   8 }, {   6,   6 }, {  18,   6 },
    {   4,   7 }, {  20,   7 }, {  10,   4 }, {  14,   4 }, {  12,   2 },
    /* bitalloc_25_f - 25 entries */
    {  13,   3 }, {  12,   3 }, {   7,   4 }, {  17,   4 }, {   5,   5 },
    {  19,   5 }, {   8,   4 }, {  16,   4 }, {   4,   6 }, {  20,   6 },
    {   6,   5 }, {   9,   4 }, {  15,   4 }, {  18,   5 }, {  23,   8 },
    {   0,  10 }, {  24,  10 }, {   1,   9 }, {   3,   7 }, {  21,   7 },
    {   2,   8 }, {  22,   8 }, {  10,   4 }, {  14,   4 }, {  11,   4 },
    /* bitalloc_25_g - 25 entries */
    {  14,   3 }, {  17,   5 }, {   4,   7 }, {  20,   7 }, {   6,   6 },
    {   9,   4 }, {  12,   2 }, {  15,   4 }, {  18,   6 }, {   3,   8 },
    {  21,   8 }, {   5,   7 }, {   8,   5 }, {  11,   3 }, {  13,   3 },
    {  16,   5 }, {  19,   7 }, {   0,  10 }, {  24,  10 }, {   2,   9 },
    {  22,   9 }, {   1,  10 }, {  23,  10 }, {   7,   6 }, {  10,   4 },
    /* bitalloc_33_a - 33 entries */
    {  15,   3 }, {  17,   3 }, {  16,   3 }, {  21,   4 }, {   8,   6 },
    {  24,   6 }, {  10,   5 }, {  12,   4 }, {  20,   4 }, {  22,   5 },
    {   7,   7 }, {  25,   7 }, {   0,  13 }, {  32,  13 }, {   1,  13 },
    {  31,  13 }, {   2,  12 }, {  30,  12 }, {   3,  11 }, {  29,  11 },
    {   4,  10 }, {  28,  10 }, {   6,   8 }, {  26,   8 }, {   5,   9 },
    {  27,   9 }, {  13,   4 }, {  19,   4 }, {  14,   4 }, {  18,   4 },
    {   9,   6 }, {  23,   6 }, {  11,   5 },
    /* bitalloc_33_b - 33 entries */
    {   8,   5 }, {  24,   5 }, {  12,   4 }, {  16,   3 }, {  20,   4 },
    {   3,   7 }, {  29,   7 }, {   6,   6 }, {   9,   5 }, {  23,   5 },
    {  26,   6 }, {  31,   8 }, {   2,   8 }, {   4,   7 }, {  13,   4 },
    {  19,   4 }, {  10,   5 }, {  22,   5 }, {  14,   4 }, {  18,   4 },
    {  28,   7 }, {  30,   8 }, {   0,  10 }, {  32,  10 }, {   1,   9 },
    {   7,   6 }, {  25,   6 }, {   5,   7 }, {  27,   7 }, {  11,   5 },
    {  21,   5 }, {  15,   4 }, {  17,   4 },
    /* bitalloc_33_c - 33 entries */
    {  25,   5 }, {  31,   7 }, {   2,   7 }, {   4,   6 }, {  12,   4 },
    {  20,   4 }, {  13,   4 }, {  19,   4 }, {   8,   5 }, {  24,   5 },
    {  28,   6 }, {  30,   7 }, {   0,   9 }, {  32,   9 }, {   1,   8 },
    {   5,   6 }, {  27,   6 }, {  14,   4 }, {  18,   4 }, {   9,   5 },
    {  23,   5 }, {  15,   4 }, {  17,   4 }, {  10,   5 }, {  22,   5 },
    {  16,   4 }, {   3,   7 }, {  29,   7 }, {   6,   6 }, {  11,   5 },
    {  21,   5 }, {  26,   6 }, {   7,   6 },
    /* bitalloc_33_d - 33 entries */
    {  18,   3 }, {  21,   5 }, {   8,   7 }, {  24,   7 }, {  10,   6 },
    {  13,   4 }, {  16,   2 }, {  19,   4 }, {  22,   6 }, {   7,   8 },
    {  25,   8 }, {   9,   7 }, {  12,   5 }, {  15,   3 }, {  17,   3 },
    {  20,   5 }, {  23,   7 }, {   6,   9 }, {  26,   9 }, {   5,  10 },
    {  27,  10 }, {   4,  11 }, {  28,  11 }, {   3,  12 }, {  29,  12 },
    {   0,  14 }, {  32,  14 }, {   1,  14 }, {  31,  14 }, {   2,  13 },
    {  30,  13 }, {  11,   6 }, {  14,   4 },
    /* bitalloc_33_e - 33 entries */
    {  19,   4 }, {  11,   5 }, {  21,   5 }, {  15,   3 }, {  17,   3 },
    {   5,   7 }, {  27,   7 }, {   2,   8 }, {  30,   8 }, {   6,   7 },
    {   9,   6 }, {  23,   6 }, {  14,   4 }, {  16,   2 }, {  18,   4 },
    {  12,   5 }, {  20,   5 }, {  26,   7 }, {   3,   8 }, {  29,   8 },
    {   0,   9 }, {  32,   9 }, {   4,   8 }, {   7,   7 }, {  10,   6 },
    {  22,   6 }, {  25,   7 }, {  28,   8 }, {   1,   9 }, {  31,   9 },
    {   8,   7 }, {  24,   7 }, {  13,   5 },
    /* bitalloc_33_f - 33 entries */
    {  11,   4 }, {  21,   4 }, {   5,   6 }, {  27,   6 }, {   8,   5 },
    {  12,   4 }, {  20,   4 }, {  24,   5 }, {   4,   7 }, {  28,   7 },
    {   6,   6 }, {  13,   4 }, {  19,   4 }, {  14,   4 }, {  18,   4 },
    {   9,   5 }, {  23,   5 }, {  15,   4 }, {  17,   4 }, {  16,   4 },
    {  26,   6 }, {  31,   9 }, {   0,  11 }, {  32,  11 }, {   1,  10 },
    {   3,   8 }, {  29,   8 }, {   2,   9 }, {  30,   9 }, {  10,   5 },
    {  22,   5 }, {   7,   6 }, {  25,   6 },
    /* bitalloc_33_g - 33 entries */
    {  12,   4 }, {  20,   4 }, {  29,   8 }, {   1,   9 }, {  31,   9 },
    {   6,   7 }, {   8,   6 }, {  10,   5 }, {  22,   5 }, {  24,   6 },
    {  26,   7 }, {   4,   8 }, {  28,   8 }, {  15,   3 }, {  17,   3 },
    {  13,   4 }, {  19,   4 }, {   2,   9 }, {  30,   9 }, {   0,  10 },
    {  32,  10 }, {   3,   9 }, {   7,   7 }, {   9,   6 }, {  11,   5 },
    {  21,   5 }, {  23,   6 }, {  25,   7 }, {   5,   8 }, {  27,   8 },
    {  16,   3 }, {  14,   4 }, {  18,   4 },
    /* bitalloc_65_a - 65 entries */
    {  35,   4 }, {  30,   4 }, {  34,   4 }, {  42,   5 }, {  23,   5 },
    {  31,   4 }, {  33,   4 }, {  32,   4 }, {  41,   5 }, {  19,   6 },
    {  45,   6 }, {  16,   7 }, {  48,   7 }, {  20,   6 }, {  24,   5 },
    {  40,   5 }, {  44,   6 }, {  14,   8 }, {  50,   8 }, {  57,  11 },
    {   4,  13 }, {  60,  13 }, {   6,  12 }, {  58,  12 }, {   3,  14 },
    {  61,  14 }, {   2,  15 }, {  62,  15 }, {   0,  16 }, {  64,  16 },
    {   1,  16 }, {  63,  16 }, {   8,  11 }, {  12,   9 }, {  52,   9 },
    {  10,  10 }, {  54,  10 }, {  25,   5 }, {  39,   5 }, {  17,   7 },
    {  47,   7 }, {  21,   6 }, {  26,   5 }, {  38,   5 }, {  43,   6 },
    {  15,   8 }, {  49,   8 }, {  18,   7 }, {  27,   5 }, {  37,   5 },
    {  28,   5 }, {  36,   5 }, {  46,   7 }, {  56,  11 }, {   5,  13 },
    {  59,  13 }, {   7,  12 }, {   9,  11 }, {  55,  11 }, {  13,   9 },
    {  51,   9 }, {  11,  10 }, {  53,  10 }, {  22,   6 }, {  29,   5 },
    /* bitalloc_65_b - 65 entries */
    {  48,   6 }, {   3,   9 }, {  61,   9 }, {   6,   8 }, {  11,   7 },
    {  53,   7 }, {  58,   8 }, {   7,   8 }, {  17,   6 }, {  31,   4 },
    {  33,   4 }, {  24,   5 }, {  40,   5 }, {  32,   4 }, {  47,   6 },
    {  18,   6 }, {  25,   5 }, {  39,   5 }, {  46,   6 }, {  57,   8 },
    {  63,  10 }, {   2,  10 }, {   4,   9 }, {  12,   7 }, {  52,   7 },
    {  13,   7 }, {  19,   6 }, {  26,   5 }, {  38,   5 }, {  45,   6 },
    {  51,   7 }, {   8,   8 }, {  56,   8 }, {  27,   5 }, {  37,   5 },
    {  20,   6 }, {  44,   6 }, {  60,   9 }, {  62,  10 }, {   0,  12 },
    {  64,  12 }, {   1,  11 }, {   5,   9 }, {  59,   9 }, {  14,   7 },
    {  50,   7 }, {   9,   8 }, {  55,   8 }, {  28,   5 }, {  36,   5 },
    {  21,   6 }, {  43,   6 }, {  29,   5 }, {  35,   5 }, {  15,   7 },
    {  49,   7 }, {  22,   6 }, {  42,   6 }, {  10,   8 }, {  54,   8 },
    {  16,   7 }, {  30,   5 }, {  34,   5 }, {  23,   6 }, {  41,   6 },
    /* bitalloc_65_c - 65 entries */
    {  23,   5 }, {  41,   5 }, {  50,   6 }, {   8,   7 }, {  56,   7 },
    {  24,   5 }, {  40,   5 }, {  15,   6 }, {  49,   6 }, {  25,   5 },
    {  39,   5 }, {  16,   6 }, {  48,   6 }, {  26,   5 }, {  38,   5 },
    {  60,   8 }, {   5,   8 }, {   9,   7 }, {  55,   7 }, {  10,   7 },
    {  27,   5 }, {  37,   5 }, {  17,   6 }, {  47,   6 }, {  28,   5 },
    {  36,   5 }, {  54,   7 }, {  59,   8 }, {  62,   9 }, {   0,  11 },
    {  64,  11 }, {   1,  10 }, {  18,   6 }, {  29,   5 }, {  35,   5 },
    {  46,   6 }, {  11,   7 }, {  53,   7 }, {  19,   6 }, {  45,   6 },
    {  30,   5 }, {  34,   5 }, {  31,   5 }, {  33,   5 }, {   6,   8 },
    {  58,   8 }, {  12,   7 }, {  20,   6 }, {  44,   6 }, {  52,   7 },
    {   3,   9 }, {  61,   9 }, {   7,   8 }, {  32,   5 }, {  21,   6 },
    {  43,   6 }, {  13,   7 }, {  51,   7 }, {  22,   6 }, {  42,   6 },
    {  57,   8 }, {  63,  10 }, {   2,  10 }, {   4,   9 }, {  14,   7 },
    /* bitalloc_65_d - 65 entries */
    {  31,   3 }, {  33,   3 }, {  48,   8 }, {  11,  10 }, {  53,  10 },
    {  14,   9 }, {  50,   9 }, {   9,  11 }, {  55,  11 }, {  12,  10 },
    {  17,   8 }, {  20,   7 }, {  44,   7 }, {  23,   6 }, {  41,   6 },
    {  26,   5 }, {  38,   5 }, {  29,   4 }, {  35,   4 }, {  32,   3 },
    {  47,   8 }, {  52,  10 }, {  60,  13 }, {   3,  14 }, {  61,  14 },
    {   7,  12 }, {  57,  12 }, {   5,  13 }, {  59,  13 }, {  15,   9 },
    {  18,   8 }, {  46,   8 }, {  21,   7 }, {  43,   7 }, {  24,   6 },
    {  40,   6 }, {  27,   5 }, {  37,   5 }, {  30,   4 }, {  34,   4 },
    {  49,   9 }, {  10,  11 }, {  54,  11 }, {  13,  10 }, {  51,  10 },
    {   8,  12 }, {  56,  12 }, {   0,  15 }, {  64,  15 }, {   1,  15 },
    {  63,  15 }, {   2,  15 }, {  62,  15 }, {   4,  14 }, {   6,  13 },
    {  58,  13 }, {  16,   9 }, {  19,   8 }, {  45,   8 }, {  22,   7 },
    {  42,   7 }, {  25,   6 }, {  39,   6 }, {  28,   5 }, {  36,   5 },
    /* bitalloc_65_e - 65 entries */
    {  33,   3 }, {  21,   6 }, {  43,   6 }, {  26,   5 }, {  38,   5 },
    {  16,   7 }, {  48,   7 }, {  22,   6 }, {  42,   6 }, {  10,   8 },
    {  54,   8 }, {   4,   9 }, {  60,   9 }, {  11,   8 }, {  27,   5 },
    {  37,   5 }, {  17,   7 }, {  47,   7 }, {  23,   6 }, {  30,   4 },
    {  34,   4 }, {  32,   3 }, {  41,   6 }, {  53,   8 }, {   5,   9 },
    {  59,   9 }, {  18,   7 }, {  46,   7 }, {  12,   8 }, {  52,   8 },
    {  24,   6 }, {  28,   5 }, {  36,   5 }, {  40,   6 }, {   6,   9 },
    {  58,   9 }, {  13,   8 }, {  19,   7 }, {  45,   7 }, {  51,   8 },
    {   0,  10 }, {  64,  10 }, {   7,   9 }, {  57,   9 }, {   1,  10 },
    {  63,  10 }, {  14,   8 }, {  50,   8 }, {   8,   9 }, {  56,   9 },
    {  20,   7 }, {  44,   7 }, {  25,   6 }, {  39,   6 }, {  15,   8 },
    {  49,   8 }, {   2,  10 }, {  62,  10 }, {   9,   9 }, {  55,   9 },
    {   3,  10 }, {  61,  10 }, {  29,   5 }, {  35,   5 }, {  31,   4 },
    /* bitalloc_65_f - 65 entries */
    {  28,   4 }, {  36,   4 }, {  26,   5 }, {  38,   5 }, {  24,   6 },
    {  40,   6 }, {  22,   7 }, {  42,   7 }, {  20,   8 }, {  44,   8 },
    {  18,   9 }, {  46,   9 }, {  48,  10 }, {  50,  11 }, {  12,  12 },
    {  52,  12 }, {   0,  14 }, {  64,  14 }, {   1,  14 }, {  63,  14 },
    {  10,  13 }, {  54,  13 }, {   2,  14 }, {  62,  14 }, {   3,  14 },
    {  61,  14 }, {   4,  14 }, {  60,  14 }, {   5,  14 }, {  59,  14 },
    {   6,  14 }, {  58,  14 }, {   7,  14 }, {  57,  14 }, {   8,  14 },
    {  56,  14 }, {  11,  13 }, {  15,  11 }, {  31,   3 }, {  33,   3 },
    {  29,   4 }, {  35,   4 }, {  27,   5 }, {  37,   5 }, {  25,   6 },
    {  39,   6 }, {  23,   7 }, {  41,   7 }, {  21,   8 }, {  43,   8 },
    {  19,   9 }, {  45,   9 }, {  17,  10 }, {  47,  10 }, {  49,  11 },
    {  13,  12 }, {  51,  12 }, {  53,  13 }, {   9,  14 }, {  55,  14 },
    {  14,  12 }, {  16,  11 }, {  32,   3 }, {  30,   4 }, {  34,   4 },
    /* bitalloc_65_g - 65 entries */
    {  36,   4 }, {  40,   5 }, {  44,   6 }, {  48,   7 }, {  12,   8 },
    {  52,   8 }, {   8,   9 }, {  56,   9 }, {   4,  10 }, {  60,  10 },
    {   0,  11 }, {  64,  11 }, {   5,  10 }, {  17,   7 }, {  21,   6 },
    {  25,   5 }, {  29,   4 }, {  35,   4 }, {  39,   5 }, {  43,   6 },
    {  47,   7 }, {  13,   8 }, {  51,   8 }, {  30,   4 }, {   9,   9 },
    {  55,   9 }, {  59,  10 }, {   1,  11 }, {  63,  11 }, {  10,   9 },
    {  18,   7 }, {  22,   6 }, {  26,   5 }, {  34,   4 }, {  38,   5 },
    {  42,   6 }, {  46,   7 }, {  14,   8 }, {  50,   8 }, {  31,   4 },
    {  33,   4 }, {  54,   9 }, {   6,  10 }, {  58,  10 }, {   2,  11 },
    {  62,  11 }, {   7,  10 }, {  11,   9 }, {  19,   7 }, {  23,   6 },
    {  27,   5 }, {  37,   5 }, {  41,   6 }, {  45,   7 }, {  15,   8 },
    {  49,   8 }, {  32,   4 }, {  53,   9 }, {  57,  10 }, {   3,  11 },
    {  61,  11 }, {  16,   8 }, {  20,   7 }, {  24,   6 }, {  28,   5 },
    /* bitalloc_129_a - 129 entries */
    {  66,   4 }, {  31,   8 }, {  97,   8 }, {  19,   9 }, { 109,   9 },
    {   6,  10 }, { 122,  10 }, {   7,  10 }, { 121,  10 }, {  52,   6 },
    {  76,   6 }, {  43,   7 }, {  85,   7 }, {  59,   5 }, {  69,   5 },
    {  32,   8 }, {  96,   8 }, {  20,   9 }, { 108,   9 }, {  33,   8 },
    {  53,   6 }, {  75,   6 }, {  95,   8 }, {   8,  10 }, { 120,  10 },
    {  21,   9 }, {  44,   7 }, {  84,   7 }, { 107,   9 }, {   9,  10 },
    { 119,  10 }, {  34,   8 }, {  94,   8 }, {  22,   9 }, { 106,   9 },
    {  45,   7 }, {  54,   6 }, {  74,   6 }, {  83,   7 }, {  10,  10 },
    { 118,  10 }, {  23,   9 }, {  35,   8 }, {  93,   8 }, { 105,   9 },
    {  11,  10 }, { 117,  10 }, {  46,   7 }, {  60,   5 }, {  68,   5 },
    {  82,   7 }, {  24,   9 }, { 104,   9 }, {  36,   8 }, {  55,   6 },
    {  73,   6 }, {  92,   8 }, {  12,  10 }, { 116,  10 }, {  25,   9 },
    {  47,   7 }, {  81,   7 }, {  37,   8 }, {  91,   8 }, { 103,   9 },
    {  13,  10 }, { 115,  10 }, {  26,   9 }, { 102,   9 }, {  48,   7 },
    {  64,   4 }, {  63,   4 }, {  65,   4 }, {  56,   6 }, {  72,   6 },
    {  61,   5 }, {  67,   5 }, {  80,   7 }, {  38,   8 }, {  90,   8 },
    {   0,  11 }, { 128,  11 }, {  14,  10 }, { 114,  10 }, {   1,  11 },
    { 127,  11 }, {  27,   9 }, { 101,   9 }, {  49,   7 }, {  79,   7 },
    {  39,   8 }, {  89,   8 }, {  57,   6 }, {  71,   6 }, {  15,  10 },
    { 113,  10 }, {  28,   9 }, { 100,   9 }, {   2,  11 }, { 126,  11 },
    {  16,  10 }, {  40,   8 }, {  88,   8 }, {  50,   7 }, {  78,   7 },
    { 112,  10 }, {   3,  11 }, { 125,  11 }, {  29,   9 }, {  99,   9 },
    {  17,  10 }, { 111,  10 }, {  41,   8 }, {  87,   8 }, {  58,   6 },
    {   4,  11 }, { 124,  11 }, {  18,  10 }, {  30,   9 }, {  98,   9 },
    { 110,  10 }, {   5,  11 }, { 123,  11 }, {  51,   7 }, {  70,   6 },
    {  77,   7 }, {  42,   8 }, {  86,   8 }, {  62,   5 },
    /* bitalloc_129_b - 129 entries */
    {  67,   5 }, {  21,   8 }, { 107,   8 }, {  33,   7 }, {  95,   7 },
    {  13,   9 }, { 115,   9 }, {  22,   8 }, {  47,   6 }, {  81,   6 },
    {  62,   5 }, {  66,   5 }, {  34,   7 }, {  94,   7 }, {  48,   6 },
    {  63,   5 }, {  65,   5 }, {  80,   6 }, { 106,   8 }, { 121,  10 },
    { 127,  12 }, {   2,  12 }, {   4,  11 }, {  14,   9 }, {  23,   8 },
    { 105,   8 }, {  35,   7 }, {  93,   7 }, {  49,   6 }, {  64,   5 },
    {  79,   6 }, { 114,   9 }, {   8,  10 }, { 120,  10 }, {  24,   8 },
    {  36,   7 }, {  50,   6 }, {  78,   6 }, {  92,   7 }, { 104,   8 },
    {  15,   9 }, { 113,   9 }, {  51,   6 }, {  77,   6 }, {  37,   7 },
    {  91,   7 }, {  25,   8 }, { 103,   8 }, {  38,   7 }, {  52,   6 },
    {  76,   6 }, {  90,   7 }, {  16,   9 }, { 112,   9 }, {  26,   8 },
    {  53,   6 }, {  75,   6 }, { 102,   8 }, { 124,  11 }, {   5,  11 },
    {   9,  10 }, { 119,  10 }, {  10,  10 }, {  39,   7 }, {  89,   7 },
    {  27,   8 }, { 101,   8 }, {  54,   6 }, {  74,   6 }, {  40,   7 },
    {  88,   7 }, {  17,   9 }, { 111,   9 }, {  28,   8 }, { 100,   8 },
    { 118,  10 }, { 123,  11 }, { 126,  12 }, {   0,  14 }, { 128,  14 },
    {   1,  13 }, {  18,   9 }, {  55,   6 }, {  73,   6 }, {  41,   7 },
    {  87,   7 }, {  56,   6 }, {  72,   6 }, {  29,   8 }, {  99,   8 },
    {  42,   7 }, {  86,   7 }, { 110,   9 }, {  11,  10 }, { 117,  10 },
    {  19,   9 }, { 109,   9 }, {  57,   6 }, {  71,   6 }, {  43,   7 },
    {  85,   7 }, {  58,   6 }, {  70,   6 }, {  30,   8 }, {  98,   8 },
    {  44,   7 }, {  84,   7 }, {  31,   8 }, {  97,   8 }, {  59,   6 },
    {  69,   6 }, {   6,  11 }, { 122,  11 }, {  12,  10 }, {  20,   9 },
    { 108,   9 }, { 116,  10 }, {   3,  12 }, { 125,  12 }, {   7,  11 },
    {  45,   7 }, {  60,   6 }, {  68,   6 }, {  83,   7 }, {  32,   8 },
    {  96,   8 }, {  46,   7 }, {  82,   7 }, {  61,   6 },
    /* bitalloc_129_c - 129 entries */
    { 101,   7 }, { 113,   8 }, { 120,   9 }, { 127,  11 }, {   2,  11 },
    {   4,  10 }, {  28,   7 }, { 100,   7 }, {  46,   6 }, {  82,   6 },
    {  16,   8 }, { 112,   8 }, {  29,   7 }, {  47,   6 }, {  81,   6 },
    {  48,   6 }, {  80,   6 }, {  99,   7 }, {  30,   7 }, {  98,   7 },
    {  17,   8 }, { 111,   8 }, {  49,   6 }, {  79,   6 }, {  50,   6 },
    {  78,   6 }, {  31,   7 }, {  97,   7 }, {   9,   9 }, { 119,   9 },
    {  18,   8 }, { 110,   8 }, { 124,  10 }, {   5,  10 }, {  10,   9 },
    {  51,   6 }, {  77,   6 }, {  32,   7 }, {  96,   7 }, {  52,   6 },
    {  76,   6 }, {  33,   7 }, {  95,   7 }, {  53,   6 }, {  75,   6 },
    {  19,   8 }, { 109,   8 }, {  34,   7 }, {  54,   6 }, {  74,   6 },
    {  94,   7 }, { 118,   9 }, { 123,  10 }, { 126,  11 }, {   0,  13 },
    { 128,  13 }, {   1,  12 }, {  20,   8 }, {  55,   6 }, {  73,   6 },
    { 108,   8 }, {  11,   9 }, { 117,   9 }, {  35,   7 }, {  93,   7 },
    {  36,   7 }, {  56,   6 }, {  72,   6 }, {  92,   7 }, {  21,   8 },
    { 107,   8 }, {  57,   6 }, {  71,   6 }, {  37,   7 }, {  91,   7 },
    {  58,   6 }, {  70,   6 }, {  22,   8 }, { 106,   8 }, {  38,   7 },
    {  59,   6 }, {  69,   6 }, {  90,   7 }, {  12,   9 }, { 116,   9 },
    {  23,   8 }, {  60,   6 }, {  68,   6 }, {  39,   7 }, {  89,   7 },
    {  61,   6 }, {  67,   6 }, { 105,   8 }, {   6,  10 }, { 122,  10 },
    {  13,   9 }, {  40,   7 }, {  62,   6 }, {  66,   6 }, {  88,   7 },
    {  24,   8 }, { 104,   8 }, {  63,   6 }, {  65,   6 }, {  41,   7 },
    {  87,   7 }, { 115,   9 }, {   3,  11 }, { 125,  11 }, {   7,  10 },
    {  25,   8 }, {  42,   7 }, {  64,   6 }, {  86,   7 }, { 103,   8 },
    {  14,   9 }, { 114,   9 }, {  43,   7 }, {  85,   7 }, {  26,   8 },
    { 102,   8 }, {  44,   7 }, {  84,   7 }, { 121,  10 }, {   8,  10 },
    {  15,   9 }, {  27,   8 }, {  45,   7 }, {  83,   7 },
    /* bitalloc_129_d - 129 entries */
    {  72,   5 }, {  83,   7 }, {  34,   9 }, {  94,   9 }, {  40,   8 },
    {  51,   6 }, {  62,   4 }, {  66,   4 }, {  77,   6 }, {  88,   8 },
    {  18,  12 }, { 110,  12 }, {   9,  14 }, { 119,  14 }, {  14,  13 },
    {  19,  12 }, {  29,  10 }, {  99,  10 }, {  24,  11 }, { 104,  11 },
    {  46,   7 }, {  57,   5 }, {  71,   5 }, {  82,   7 }, {  35,   9 },
    {  93,   9 }, {  41,   8 }, {  52,   6 }, {  63,   4 }, {  65,   4 },
    {  76,   6 }, {  87,   8 }, {  30,  10 }, {  98,  10 }, { 109,  12 },
    { 114,  13 }, {   6,  15 }, { 122,  15 }, {  10,  14 }, {  25,  11 },
    { 103,  11 }, {  15,  13 }, { 113,  13 }, {  20,  12 }, {  47,   7 },
    {  58,   5 }, {  70,   5 }, {  81,   7 }, {  36,   9 }, {  92,   9 },
    {  42,   8 }, {  53,   6 }, {  64,   4 }, {  75,   6 }, {  86,   8 },
    {  31,  10 }, {  97,  10 }, { 108,  12 }, { 118,  14 }, {   7,  15 },
    { 121,  15 }, {   0,  16 }, { 128,  16 }, {   1,  16 }, { 127,  16 },
    {   2,  16 }, { 126,  16 }, {   3,  16 }, { 125,  16 }, {  26,  11 },
    { 102,  11 }, {  11,  14 }, { 117,  14 }, {  16,  13 }, {  21,  12 },
    {  48,   7 }, {  59,   5 }, {  69,   5 }, {  80,   7 }, {  37,   9 },
    {  91,   9 }, {  43,   8 }, {  54,   6 }, {  74,   6 }, {  85,   8 },
    {  32,  10 }, {  96,  10 }, { 107,  12 }, { 112,  13 }, {   4,  16 },
    { 124,  16 }, {   8,  15 }, {  12,  14 }, {  27,  11 }, { 101,  11 },
    {  22,  12 }, { 106,  12 }, {  49,   7 }, {  60,   5 }, {  68,   5 },
    {  79,   7 }, {  38,   9 }, {  90,   9 }, {  44,   8 }, {  55,   6 },
    {  73,   6 }, {  84,   8 }, {  33,  10 }, {  95,  10 }, { 116,  14 },
    { 120,  15 }, {   5,  16 }, { 123,  16 }, {  17,  13 }, { 111,  13 },
    {  13,  14 }, { 115,  14 }, {  28,  11 }, { 100,  11 }, {  23,  12 },
    { 105,  12 }, {  50,   7 }, {  61,   5 }, {  67,   5 }, {  78,   7 },
    {  39,   9 }, {  89,   9 }, {  45,   8 }, {  56,   6 },
    /* bitalloc_129_e - 129 entries */
    {  70,   5 }, {  59,   5 }, {  69,   5 }, {  60,   5 }, {  68,   5 },
    {  37,   7 }, {  91,   7 }, {  45,   6 }, {  61,   5 }, {  67,   5 },
    {  62,   5 }, {  66,   5 }, {  63,   5 }, {  65,   5 }, {  64,   5 },
    {  83,   6 }, {  97,   8 }, { 102,   9 }, {  18,  11 }, { 110,  11 },
    {  22,  10 }, {  38,   7 }, {  46,   6 }, {  82,   6 }, {  90,   7 },
    {  32,   8 }, {  96,   8 }, {  47,   6 }, {  81,   6 }, { 106,  10 },
    {  15,  12 }, { 113,  12 }, {  19,  11 }, {  27,   9 }, { 101,   9 },
    {  23,  10 }, { 105,  10 }, {  39,   7 }, {  89,   7 }, {  33,   8 },
    {  95,   8 }, {  48,   6 }, {  80,   6 }, {  49,   6 }, {  79,   6 },
    {  40,   7 }, {  88,   7 }, {  28,   9 }, { 100,   9 }, { 109,  11 },
    {   6,  15 }, { 122,  15 }, {   9,  14 }, {  12,  13 }, { 116,  13 },
    { 119,  14 }, {   0,  16 }, {   4,  16 }, {   3,  16 }, {   2,  16 },
    {  24,  10 }, { 104,  10 }, {  16,  12 }, { 112,  12 }, {  20,  11 },
    {  34,   8 }, {  94,   8 }, {  50,   6 }, {  78,   6 }, {  41,   7 },
    {  87,   7 }, {  51,   6 }, {  77,   6 }, {  52,   6 }, {  76,   6 },
    {  29,   9 }, {  99,   9 }, {  35,   8 }, {  42,   7 }, {  86,   7 },
    {  93,   8 }, { 108,  11 }, {   1,  16 }, { 128,  16 }, { 126,  16 },
    { 127,  16 }, { 124,  16 }, { 125,  16 }, {   7,  15 }, {  13,  13 },
    { 115,  13 }, {  10,  14 }, { 118,  14 }, {  25,  10 }, { 103,  10 },
    {  17,  12 }, { 111,  12 }, {  21,  11 }, {  53,   6 }, {  75,   6 },
    {  54,   6 }, {  74,   6 }, {  43,   7 }, {  85,   7 }, {  55,   6 },
    {  73,   6 }, {  30,   9 }, {  98,   9 }, {  36,   8 }, {  92,   8 },
    { 107,  11 }, { 121,  15 }, {   5,  16 }, { 123,  16 }, {   8,  15 },
    { 120,  15 }, {  14,  13 }, { 114,  13 }, {  11,  14 }, { 117,  14 },
    {  26,  10 }, {  31,   9 }, {  56,   6 }, {  72,   6 }, {  57,   6 },
    {  71,   6 }, {  44,   7 }, {  84,   7 }, {  58,   6 },
    /* bitalloc_129_f - 129 entries */
    {  42,   6 }, {  86,   6 }, {  43,   6 }, {  85,   6 }, { 107,   8 },
    { 114,   9 }, {   9,  10 }, { 119,  10 }, {  30,   7 }, {  98,   7 },
    {  31,   7 }, {  44,   6 }, {  84,   6 }, {  45,   6 }, {  83,   6 },
    {  97,   7 }, {  22,   8 }, { 106,   8 }, {  46,   6 }, {  82,   6 },
    {  32,   7 }, {  96,   7 }, {  47,   6 }, {  81,   6 }, {  15,   9 },
    { 113,   9 }, {  23,   8 }, { 105,   8 }, {  10,  10 }, { 118,  10 },
    {  16,   9 }, {  48,   6 }, {  80,   6 }, {  33,   7 }, {  95,   7 },
    {  49,   6 }, {  79,   6 }, {  50,   6 }, {  78,   6 }, { 112,   9 },
    {   3,  12 }, { 125,  12 }, {   6,  11 }, { 122,  11 }, {   7,  11 },
    {  24,   8 }, {  34,   7 }, {  51,   6 }, {  77,   6 }, {  94,   7 },
    { 104,   8 }, {  11,  10 }, { 117,  10 }, {  17,   9 }, {  52,   6 },
    {  76,   6 }, {  53,   6 }, {  75,   6 }, {  35,   7 }, {  93,   7 },
    {  54,   6 }, {  74,   6 }, {  55,   6 }, {  73,   6 }, {  25,   8 },
    { 103,   8 }, {  36,   7 }, {  56,   6 }, {  72,   6 }, {  57,   6 },
    {  71,   6 }, {  92,   7 }, { 111,   9 }, { 121,  11 }, { 127,  13 },
    {   2,  13 }, {   4,  12 }, {  12,  10 }, {  18,   9 }, { 110,   9 },
    {  58,   6 }, {  70,   6 }, {  59,   6 }, {  69,   6 }, {  60,   6 },
    {  68,   6 }, {  61,   6 }, {  67,   6 }, {  62,   6 }, {  66,   6 },
    {  26,   8 }, { 102,   8 }, {  37,   7 }, {  63,   6 }, {  65,   6 },
    {  64,   6 }, {  91,   7 }, {  38,   7 }, {  90,   7 }, {  27,   8 },
    { 101,   8 }, { 116,  10 }, { 124,  12 }, { 126,  13 }, {   0,  15 },
    { 128,  15 }, {   1,  14 }, {   8,  11 }, {  19,   9 }, { 109,   9 },
    {  13,  10 }, { 115,  10 }, {  39,   7 }, {  89,   7 }, {  28,   8 },
    { 100,   8 }, {  40,   7 }, {  88,   7 }, {  41,   7 }, {  87,   7 },
    {  20,   9 }, { 108,   9 }, {  29,   8 }, {  99,   8 }, { 120,  11 },
    {   5,  12 }, { 123,  12 }, {  14,  10 }, {  21,   9 },
    /* bitalloc_129_g - 129 entries */
    {  64,   4 }, {  88,   7 }, {   9,  11 }, { 119,  11 }, {  17,  10 },
    {  25,   9 }, {  33,   8 }, {  41,   7 }, {  87,   7 }, {  49,   6 },
    {  79,   6 }, {  57,   5 }, {  71,   5 }, {  95,   8 }, { 103,   9 },
    { 111,  10 }, {   2,  12 }, { 126,  12 }, {  10,  11 }, {  18,  10 },
    { 110,  10 }, {  26,   9 }, {  34,   8 }, {  42,   7 }, {  86,   7 },
    {  50,   6 }, {  78,   6 }, {  58,   5 }, {  70,   5 }, {  94,   8 },
    { 102,   9 }, { 118,  11 }, {   3,  12 }, { 125,  12 }, {  11,  11 },
    { 117,  11 }, {  19,  10 }, { 109,  10 }, {  27,   9 }, {  35,   8 },
    {  43,   7 }, {  85,   7 }, {  51,   6 }, {  77,   6 }, {  59,   5 },
    {  69,   5 }, {  93,   8 }, { 101,   9 }, {   4,  12 }, { 124,  12 },
    {  12,  11 }, {  20,  10 }, {  28,   9 }, { 100,   9 }, {  36,   8 },
    {  44,   7 }, {  84,   7 }, {  52,   6 }, {  76,   6 }, {  60,   5 },
    {  68,   5 }, {  92,   8 }, { 108,  10 }, { 116,  11 }, {   5,  12 },
    { 123,  12 }, {  13,  11 }, { 115,  11 }, {  21,  10 }, {  29,   9 },
    {  99,   9 }, {  37,   8 }, {  45,   7 }, {  83,   7 }, {  53,   6 },
    {  75,   6 }, {  61,   5 }, {  67,   5 }, {  91,   8 }, { 107,  10 },
    {   6,  12 }, { 122,  12 }, {  14,  11 }, {  22,  10 }, { 106,  10 },
    {  30,   9 }, {  98,   9 }, {  38,   8 }, {  46,   7 }, {  82,   7 },
    {  54,   6 }, {  74,   6 }, {  62,   5 }, {  66,   5 }, {  90,   8 },
    { 114,  11 }, {   7,  12 }, { 121,  12 }, {  15,  11 }, { 113,  11 },
    {  23,  10 }, { 105,  10 }, {  31,   9 }, {  97,   9 }, {  39,   8 },
    {  47,   7 }, {  81,   7 }, {  55,   6 }, {  73,   6 }, {  63,   5 },
    {  65,   5 }, {  89,   8 }, {   0,  13 }, { 128,  13 }, {   8,  12 },
    {  16,  11 }, {  24,  10 }, {  32,   9 }, {  96,   9 }, { 104,  10 },
    { 112,  11 }, { 120,  12 }, {   1,  13 }, { 127,  13 }, {  40,   8 },
    {  48,   7 }, {  80,   7 }, {  56,   6 }, {  72,   6 },
    /* bit_alloc_12[0] - 12 entries */
    {   0,   1 }, {   1,   2 }, {   2,   3 }, {   3,   4 }, {   4,   5 },
    {   5,   6 }, {  11,   9 }, {  10,   9 }, {   9,   9 }, {   8,   9 },
    {   7,   8 }, {   6,   8 },
    /* bit_alloc_12[1] - 12 entries */
    {   1,   2 }, {   2,   3 }, {   4,   5 }, {  11,   7 }, {  10,   7 },
    {   9,   7 }, {   8,   7 }, {   7,   7 }, {   6,   7 }, {   5,   6 },
    {   3,   5 }, {   0,   1 },
    /* bit_alloc_12[2] - 12 entries */
    {   0,   2 }, {   4,   3 }, {   7,   4 }, {  11,   7 }, {  10,   7 },
    {   9,   6 }, {   8,   5 }, {   3,   3 }, {   2,   3 }, {   6,   4 },
    {   5,   4 }, {   1,   3 },
    /* bit_alloc_12[3] - 12 entries */
    {   2,   2 }, {   3,   3 }, {   4,   4 }, {   5,   5 }, {   6,   6 },
    {   7,   7 }, {   8,   8 }, {   9,   9 }, {  11,  10 }, {  10,  10 },
    {   1,   2 }, {   0,   2 },
    /* bit_alloc_12[4] - 12 entries */
    {   1,   2 }, {   2,   3 }, {   3,   4 }, {   4,   5 }, {   9,   8 },
    {   8,   8 }, {   6,   7 }, {   7,   8 }, {  11,   9 }, {  10,   9 },
    {   5,   7 }, {   0,   1 },
    /* scale_factor[0] - 129 entries */
    {  66,   3 }, {  69,   5 }, {  55,   8 }, {  73,   8 }, {  40,  13 },
    {  88,  13 }, {  41,  13 }, {  87,  13 }, {  42,  13 }, {  86,  13 },
    {  43,  13 }, {  85,  13 }, {  44,  13 }, {  84,  13 }, {  45,  13 },
    {  83,  13 }, {  46,  13 }, {  82,  13 }, {  47,  13 }, {  81,  13 },
    {  51,  11 }, {  77,  11 }, {  48,  13 }, {  80,  13 }, {  50,  12 },
    {  78,  12 }, {  49,  13 }, {  79,  13 }, {  54,   9 }, {  74,   9 },
    {  58,   6 }, {  61,   4 }, {  64,   2 }, {  67,   4 }, {  70,   6 },
    {  57,   7 }, {  71,   7 }, {  60,   5 }, {  63,   3 }, {  65,   3 },
    {  68,   5 }, {  56,   8 }, {  72,   8 }, {  53,  10 }, {  75,  10 },
    {  52,  11 }, {  76,  11 }, {   0,  14 }, { 128,  14 }, {   1,  14 },
    { 127,  14 }, {   2,  14 }, { 126,  14 }, {   3,  14 }, { 125,  14 },
    {   4,  14 }, { 124,  14 }, {   5,  14 }, { 123,  14 }, {   6,  14 },
    { 122,  14 }, {   7,  14 }, { 121,  14 }, {   8,  14 }, { 120,  14 },
    {   9,  14 }, { 119,  14 }, {  10,  14 }, { 118,  14 }, {  11,  14 },
    { 117,  14 }, {  12,  14 }, { 116,  14 }, {  13,  14 }, { 115,  14 },
    {  14,  14 }, { 114,  14 }, {  15,  14 }, { 113,  14 }, {  16,  14 },
    { 112,  14 }, {  17,  14 }, { 111,  14 }, {  18,  14 }, { 110,  14 },
    {  19,  14 }, { 109,  14 }, {  20,  14 }, { 108,  14 }, {  21,  14 },
    { 107,  14 }, {  22,  14 }, { 106,  14 }, {  23,  14 }, { 105,  14 },
    {  24,  14 }, { 104,  14 }, {  25,  14 }, { 103,  14 }, {  26,  14 },
    { 102,  14 }, {  27,  14 }, { 101,  14 }, {  28,  14 }, { 100,  14 },
    {  29,  14 }, {  99,  14 }, {  30,  14 }, {  98,  14 }, {  31,  14 },
    {  97,  14 }, {  32,  14 }, {  96,  14 }, {  33,  14 }, {  95,  14 },
    {  34,  14 }, {  94,  14 }, {  35,  14 }, {  93,  14 }, {  36,  14 },
    {  92,  14 }, {  37,  14 }, {  91,  14 }, {  38,  14 }, {  90,  14 },
    {  39,  14 }, {  89,  14 }, {  59,   6 }, {  62,   4 },
    /* scale_factor[1] - 129 entries */
    {  69,   4 }, {  56,   6 }, {  72,   6 }, {  55,   7 }, {  73,   7 },
    {  54,   8 }, {  74,   8 }, {  75,   9 }, {  48,  14 }, {  80,  14 },
    {  49,  14 }, {  79,  14 }, {  50,  13 }, {  78,  13 }, {  51,  12 },
    {  77,  12 }, {   0,  15 }, { 128,  15 }, {   1,  15 }, { 127,  15 },
    {   2,  15 }, { 126,  15 }, {   3,  15 }, { 125,  15 }, {   4,  15 },
    { 124,  15 }, {   5,  15 }, { 123,  15 }, {   6,  15 }, { 122,  15 },
    {   7,  15 }, { 121,  15 }, {   8,  15 }, { 120,  15 }, {   9,  15 },
    { 119,  15 }, {  10,  15 }, { 118,  15 }, {  11,  15 }, { 117,  15 },
    {  12,  15 }, { 116,  15 }, {  13,  15 }, { 115,  15 }, {  14,  15 },
    { 114,  15 }, {  15,  15 }, { 113,  15 }, {  16,  15 }, { 112,  15 },
    {  17,  15 }, { 111,  15 }, {  18,  15 }, { 110,  15 }, {  19,  15 },
    { 109,  15 }, {  20,  15 }, { 108,  15 }, {  21,  15 }, { 107,  15 },
    {  22,  15 }, { 106,  15 }, {  23,  15 }, { 105,  15 }, {  24,  15 },
    { 104,  15 }, {  25,  15 }, { 103,  15 }, {  26,  15 }, { 102,  15 },
    {  27,  15 }, { 101,  15 }, {  28,  15 }, { 100,  15 }, {  29,  15 },
    {  99,  15 }, {  30,  15 }, {  98,  15 }, {  31,  15 }, {  97,  15 },
    {  32,  15 }, {  96,  15 }, {  33,  15 }, {  95,  15 }, {  34,  15 },
    {  94,  15 }, {  35,  15 }, {  93,  15 }, {  36,  15 }, {  92,  15 },
    {  37,  15 }, {  91,  15 }, {  38,  15 }, {  90,  15 }, {  39,  15 },
    {  89,  15 }, {  40,  15 }, {  88,  15 }, {  41,  15 }, {  87,  15 },
    {  42,  15 }, {  86,  15 }, {  43,  15 }, {  85,  15 }, {  44,  15 },
    {  84,  15 }, {  45,  15 }, {  83,  15 }, {  46,  15 }, {  82,  15 },
    {  47,  15 }, {  81,  15 }, {  52,  11 }, {  76,  11 }, {  53,  10 },
    {  63,   3 }, {  65,   3 }, {  64,   3 }, {  58,   5 }, {  70,   5 },
    {  60,   4 }, {  68,   4 }, {  61,   4 }, {  67,   4 }, {  57,   6 },
    {  71,   6 }, {  59,   5 }, {  62,   4 }, {  66,   4 },
    /* scale_factor[2] - 129 entries */
    {  63,   3 }, {  65,   3 }, {  46,   9 }, {  82,   9 }, {  49,   8 },
    {  79,   8 }, {  85,  10 }, {  38,  12 }, {  90,  12 }, {  41,  11 },
    {  87,  11 }, {  93,  13 }, {  33,  14 }, {  95,  14 }, {  36,  13 },
    {  92,  13 }, {  44,  10 }, {  52,   7 }, {  76,   7 }, {  55,   6 },
    {  73,   6 }, {  58,   5 }, {  70,   5 }, {  61,   4 }, {  67,   4 },
    {  64,   3 }, {  47,   9 }, {  81,   9 }, {  50,   8 }, {  78,   8 },
    {  84,  10 }, {  39,  12 }, {  89,  12 }, {  42,  11 }, {  86,  11 },
    {   0,  15 }, { 128,  15 }, {   1,  15 }, { 127,  15 }, {   2,  15 },
    { 126,  15 }, {   3,  15 }, { 125,  15 }, {   4,  15 }, { 124,  15 },
    {   5,  15 }, { 123,  15 }, {   6,  15 }, { 122,  15 }, {   7,  15 },
    { 121,  15 }, {   8,  15 }, { 120,  15 }, {   9,  15 }, { 119,  15 },
    {  10,  15 }, { 118,  15 }, {  11,  15 }, { 117,  15 }, {  12,  15 },
    { 116,  15 }, {  13,  15 }, { 115,  15 }, {  14,  15 }, { 114,  15 },
    {  15,  15 }, { 113,  15 }, {  16,  15 }, { 112,  15 }, {  17,  15 },
    { 111,  15 }, {  18,  15 }, { 110,  15 }, {  19,  15 }, { 109,  15 },
    {  20,  15 }, { 108,  15 }, {  21,  15 }, { 107,  15 }, {  22,  15 },
    { 106,  15 }, {  23,  15 }, { 105,  15 }, {  53,   7 }, {  75,   7 },
    {  56,   6 }, {  72,   6 }, {  59,   5 }, {  69,   5 }, {  62,   4 },
    {  66,   4 }, {  45,  10 }, {  83,  10 }, {  48,   9 }, {  80,   9 },
    {  24,  15 }, { 104,  15 }, {  25,  15 }, { 103,  15 }, {  26,  15 },
    { 102,  15 }, {  27,  15 }, { 101,  15 }, {  28,  15 }, { 100,  15 },
    {  29,  15 }, {  99,  15 }, {  30,  15 }, {  98,  15 }, {  31,  15 },
    {  97,  15 }, {  34,  14 }, {  94,  14 }, {  37,  13 }, {  40,  12 },
    {  88,  12 }, {  91,  13 }, {  32,  15 }, {  96,  15 }, {  35,  14 },
    {  43,  11 }, {  51,   8 }, {  77,   8 }, {  54,   7 }, {  74,   7 },
    {  57,   6 }, {  71,   6 }, {  60,   5 }, {  68,   5 },
    /* scale_factor[3] - 129 entries */
    {  64,   2 }, {  53,   8 }, {  75,   8 }, {  55,   7 }, {  57,   6 },
    {  59,   5 }, {  69,   5 }, {  71,   6 }, {  73,   7 }, {  77,   9 },
    {  79,  10 }, {  83,  12 }, {  42,  14 }, {  86,  14 }, {  44,  13 },
    {  46,  12 }, {  82,  12 }, {  48,  11 }, {  80,  11 }, {  50,  10 },
    {  52,   9 }, {  61,   4 }, {  67,   4 }, {  63,   3 }, {  65,   3 },
    {  54,   8 }, {  74,   8 }, {  56,   7 }, {  58,   6 }, {  60,   5 },
    {  68,   5 }, {  70,   6 }, {  72,   7 }, {  76,   9 }, {  78,  10 },
    {  84,  13 }, {   0,  15 }, { 128,  15 }, {   1,  15 }, { 127,  15 },
    {   2,  15 }, { 126,  15 }, {   3,  15 }, { 125,  15 }, {   4,  15 },
    { 124,  15 }, {   5,  15 }, { 123,  15 }, {   6,  15 }, { 122,  15 },
    {   7,  15 }, { 121,  15 }, {   8,  15 }, { 120,  15 }, {   9,  15 },
    { 119,  15 }, {  10,  15 }, { 118,  15 }, {  11,  15 }, { 117,  15 },
    {  12,  15 }, { 116,  15 }, {  13,  15 }, { 115,  15 }, {  14,  15 },
    { 114,  15 }, {  15,  15 }, { 113,  15 }, {  16,  15 }, { 112,  15 },
    {  17,  15 }, { 111,  15 }, {  18,  15 }, { 110,  15 }, {  19,  15 },
    { 109,  15 }, {  20,  15 }, { 108,  15 }, {  21,  15 }, { 107,  15 },
    {  22,  15 }, { 106,  15 }, {  23,  15 }, { 105,  15 }, {  24,  15 },
    { 104,  15 }, {  25,  15 }, { 103,  15 }, {  26,  15 }, { 102,  15 },
    {  27,  15 }, { 101,  15 }, {  28,  15 }, { 100,  15 }, {  29,  15 },
    {  99,  15 }, {  30,  15 }, {  98,  15 }, {  31,  15 }, {  97,  15 },
    {  32,  15 }, {  96,  15 }, {  33,  15 }, {  95,  15 }, {  34,  15 },
    {  94,  15 }, {  35,  15 }, {  93,  15 }, {  36,  15 }, {  92,  15 },
    {  37,  15 }, {  91,  15 }, {  38,  15 }, {  90,  15 }, {  39,  15 },
    {  89,  15 }, {  40,  15 }, {  88,  15 }, {  41,  15 }, {  87,  15 },
    {  43,  14 }, {  85,  14 }, {  45,  13 }, {  47,  12 }, {  81,  12 },
    {  49,  11 }, {  51,  10 }, {  62,   4 }, {  66,   4 },
    /* scale_factor[4] - 129 entries */
    {  56,   5 }, {  72,   5 }, {  52,   6 }, {  76,   6 }, {  48,   7 },
    {  80,   7 }, {  44,   8 }, {  84,   8 }, {  40,   9 }, {  88,   9 },
    {  36,  10 }, {  92,  10 }, {  96,  11 }, {  28,  12 }, { 100,  12 },
    {  24,  13 }, { 104,  13 }, {  16,  15 }, { 112,  15 }, {  20,  14 },
    { 108,  14 }, {  21,  14 }, {  33,  11 }, {  61,   4 }, {  67,   4 },
    {  57,   5 }, {  71,   5 }, {  53,   6 }, {  75,   6 }, {  49,   7 },
    {  79,   7 }, {  45,   8 }, {  83,   8 }, {  41,   9 }, {  87,   9 },
    {  37,  10 }, {  91,  10 }, {  95,  11 }, {  29,  12 }, {  99,  12 },
    {  25,  13 }, { 103,  13 }, { 107,  14 }, {  17,  15 }, { 111,  15 },
    {  26,  13 }, {  34,  11 }, {  62,   4 }, {  66,   4 }, {  58,   5 },
    {  70,   5 }, {  54,   6 }, {  74,   6 }, {  50,   7 }, {  78,   7 },
    {  46,   8 }, {  82,   8 }, {  42,   9 }, {  86,   9 }, {  38,  10 },
    {  90,  10 }, {  94,  11 }, {  30,  12 }, {  98,  12 }, {  39,  10 },
    {  63,   4 }, {  65,   4 }, {  59,   5 }, {  69,   5 }, {  55,   6 },
    {  73,   6 }, {  51,   7 }, {  77,   7 }, {  47,   8 }, {  81,   8 },
    {  43,   9 }, {  85,   9 }, {  89,  10 }, { 102,  13 }, {  22,  14 },
    { 106,  14 }, {  18,  15 }, { 110,  15 }, {   0,  16 }, { 128,  16 },
    {   1,  16 }, { 127,  16 }, {  27,  13 }, {  35,  11 }, {  93,  11 },
    {  31,  12 }, {  97,  12 }, { 101,  13 }, {   2,  16 }, { 126,  16 },
    {   3,  16 }, { 125,  16 }, {   4,  16 }, { 124,  16 }, {   5,  16 },
    { 123,  16 }, {   6,  16 }, { 122,  16 }, {   7,  16 }, { 121,  16 },
    {   8,  16 }, { 120,  16 }, {   9,  16 }, { 119,  16 }, {  10,  16 },
    { 118,  16 }, {  11,  16 }, { 117,  16 }, {  12,  16 }, { 116,  16 },
    {  13,  16 }, { 115,  16 }, {  14,  16 }, { 114,  16 }, {  15,  16 },
    { 113,  16 }, {  23,  14 }, { 105,  14 }, {  19,  15 }, { 109,  15 },
    {  32,  12 }, {  64,   4 }, {  60,   5 }, {  68,   5 },
    /* transition_mode[0] - 4 entries */
    {   0,   1 }, {   1,   2 }, {   2,   3 }, {   3,   3 },
    /* transition_mode[1] - 4 entries */
    {   3,   1 }, {   0,   2 }, {   1,   3 }, {   2,   3 },
    /* transition_mode[2] - 4 entries */
    {   2,   1 }, {   3,   2 }, {   0,   3 }, {   1,   3 },
    /* transition_mode[3] - 4 entries */
    {   0,   2 }, {   1,   2 }, {   2,   2 }, {   3,   2 },
    /* tnl_group[0] - 37 entries */
    {   5,   3 }, {   4,   3 }, {  19,   8 }, {  33,  12 }, {  31,  12 },
    {  28,  11 }, {  34,  14 }, {  37,  14 }, {  35,  15 }, {   0,  15 },
    {  36,  14 }, {  32,  12 }, {  30,  11 }, {  24,   9 }, {  22,   8 },
    {  23,   9 }, {  29,  10 }, {  27,  10 }, {  17,   6 }, {  14,   5 },
    {   7,   4 }, {  12,   5 }, {   1,   6 }, {  26,   9 }, {   3,   9 },
    {  25,   8 }, {  20,   7 }, {   8,   4 }, {  10,   4 }, {  13,   4 },
    {  15,   6 }, {  16,   6 }, {  18,   6 }, {  21,   6 }, {  11,   4 },
    {   9,   3 }, {   6,   3 },
    /* tnl_group[1] - 34 entries */
    {   4,   4 }, {   7,   4 }, {  10,   4 }, {   3,  10 }, {  27,  10 },
    {  29,  10 }, {  28,  10 }, {  22,   8 }, {  21,   7 }, {  15,   6 },
    {  14,   5 }, {   8,   4 }, {  16,   6 }, {  19,   7 }, {  23,   8 },
    {  26,   9 }, {  30,  10 }, {  33,  13 }, {  34,  14 }, {   0,  14 },
    {  32,  12 }, {  31,  11 }, {  12,   5 }, {   5,   3 }, {   9,   3 },
    {   1,   4 }, {  20,   7 }, {  25,   8 }, {  24,   8 }, {  18,   6 },
    {  17,   5 }, {   6,   3 }, {  11,   4 }, {  13,   4 },
    /* tnl_group[2] - 31 entries */
    {  14,   7 }, {  17,   7 }, {  15,   7 }, {  23,   9 }, {  28,  10 },
    {  29,  11 }, {  30,  13 }, {   0,  13 }, {  31,  12 }, {  25,   8 },
    {  10,   5 }, {   8,   4 }, {   9,   4 }, {   4,   4 }, {  22,   8 },
    {   3,   8 }, {  21,   8 }, {  26,   9 }, {  27,   9 }, {  12,   6 },
    {  11,   5 }, {  16,   7 }, {  18,   7 }, {  20,   8 }, {  24,   8 },
    {  19,   7 }, {  13,   5 }, {   5,   3 }, {   1,   2 }, {   6,   3 },
    {   7,   3 },
    /* tnl_group[3] - 28 entries */
    {   8,   6 }, {   2,   6 }, {   7,   6 }, {  23,   7 }, {  12,   7 },
    {   5,   4 }, {  10,   6 }, {  20,   8 }, {  25,   9 }, {  26,  10 },
    {  27,  11 }, {   0,  11 }, {  22,   7 }, {   9,   5 }, {  13,   6 },
    {  17,   6 }, {   4,   5 }, {  14,   6 }, {  19,   7 }, {  24,   7 },
    {   3,   6 }, {  11,   6 }, {  21,   6 }, {  18,   6 }, {  16,   6 },
    {  15,   6 }, {   6,   3 }, {   1,   1 },
    /* tnl_group[4] - 23 entries */
    {   2,   2 }, {   7,   7 }, {  15,   8 }, {  21,   8 }, {   3,   6 },
    {   6,   6 }, {  13,   7 }, {  14,   8 }, {  18,   8 }, {   4,   4 },
    {   5,   5 }, {  11,   7 }, {  10,   7 }, {  20,   6 }, {  12,   8 },
    {  16,   9 }, {  22,  10 }, {   0,  10 }, {  17,   7 }, {  19,   6 },
    {   8,   6 }, {   9,   6 }, {   1,   1 },
    /* tnl_scf - 20 entries */
    {   3,   3 }, {  11,   6 }, {  16,   9 }, {  17,  10 }, {  18,  11 },
    {  19,  12 }, {   0,  12 }, {  15,   8 }, {  14,   7 }, {   9,   5 },
    {   7,   4 }, {   2,   3 }, {   4,   3 }, {   1,   3 }, {   5,   3 },
    {  12,   6 }, {  13,   6 }, {  10,   5 }, {   8,   4 }, {   6,   3 },
    /* damp - 7 entries */
    {   2,   2 }, {   3,   3 }, {   4,   4 }, {   5,   5 }, {   6,   6 },
    {   0,   6 }, {   1,   1 },
    /* dph - 9 entries */
    {   2,   2 }, {   1,   2 }, {   3,   4 }, {   7,   4 }, {   6,   5 },
    {   5,   6 }, {   0,   6 }, {   4,   4 }, {   8,   2 },
    /* fst_rsd_amp - 24 entries */
    {  12,   4 }, {  17,   4 }, {   1,   6 }, {   8,   6 }, {   9,   5 },
    {  20,   7 }, {   3,   7 }, {   5,   6 }, {   6,   6 }, {   2,   7 },
    {  22,   9 }, {  23,  10 }, {   0,  10 }, {  21,   8 }, {  11,   4 },
    {  19,   5 }, {   7,   6 }, {   4,   6 }, {  16,   3 }, {  10,   4 },
    {  18,   4 }, {  15,   3 }, {  13,   3 }, {  14,   3 },
    /* rsd_apprx - 6 entries */
    {   1,   1 }, {   2,   2 }, {   3,   3 }, {   4,   4 }, {   5,   5 },
    {   0,   5 },
    /* rsd_amp - 33 entries */
    {   2,   3 }, {   1,   3 }, {   5,   3 }, {  14,   8 }, {  20,   9 },
    {  26,  10 }, {  25,  12 }, {  32,  12 }, {  19,  11 }, {  16,   8 },
    {  24,   9 }, {  17,   9 }, {  12,   7 }, {  13,   7 }, {   9,   5 },
    {   7,   4 }, {   3,   2 }, {   4,   3 }, {   8,   6 }, {  11,   6 },
    {  18,   8 }, {  15,   8 }, {  30,  11 }, {  36,  13 }, {  34,  13 },
    {  29,  13 }, {   0,  13 }, {  21,  10 }, {  28,  10 }, {  23,  10 },
    {  22,   8 }, {  10,   6 }, {   6,   4 },
    /* avg_g3 - 18 entries */
    {  14,   4 }, {  11,   6 }, {  19,   7 }, {   9,   7 }, {  13,   5 },
    {  10,   6 }, {  20,   8 }, {   8,   8 }, {   6,  10 }, {  23,  11 },
    {   0,  11 }, {  21,   9 }, {   7,   8 }, {  12,   5 }, {  18,   4 },
    {  16,   2 }, {  15,   2 }, {  17,   2 },
    /* st_grid - 22 entries */
    {   4,   4 }, {   3,   4 }, {   8,   4 }, {  14,   8 }, {   7,   9 },
    {   9,  10 }, {  22,  10 }, {  12,   7 }, {  16,   9 }, {  11,  10 },
    {  13,  11 }, {  17,  13 }, {  15,  13 }, {  24,  13 }, {   0,  13 },
    {  18,   9 }, {  20,  10 }, {   2,  10 }, {   5,   7 }, {  10,   5 },
    {   1,   2 }, {   6,   1 },
    /* grid_2 - 20 entries */
    {   3,   2 }, {   2,   2 }, {   4,   3 }, {   5,   4 }, {   6,   5 },
    {  11,  11 }, {  13,  12 }, {  17,  12 }, {  19,  14 }, {  14,  14 },
    {  18,  13 }, {  15,  13 }, {  16,  14 }, {   0,  14 }, {  12,  11 },
    {  10,   9 }, {   9,   8 }, {   8,   7 }, {   7,   6 }, {   1,   2 },
    /* grid_3 - 13 entries */
    {  18,   3 }, {  15,   4 }, {  19,   5 }, {  14,   6 }, {  13,   8 },
    {  12,  10 }, {  11,  12 }, {   0,  12 }, {  22,  11 }, {  21,   9 },
    {  20,   7 }, {  16,   2 }, {  17,   1 },
    /* rsd - 9 entries */
    {   1,   3 }, {   5,   4 }, {   6,   5 }, {   7,   6 }, {   4,   6 },
    {   4,   3 }, {   0,   3 }, {   2,   2 }, {   3,   2 },
};

VLC     ff_dca_vlc_bit_allocation[5];
VLC     ff_dca_vlc_transition_mode[4];
VLC     ff_dca_vlc_scale_factor[5];
VLC     ff_dca_vlc_quant_index[DCA_CODE_BOOKS][7];

VLC     ff_dca_vlc_tnl_grp[5];
VLC     ff_dca_vlc_tnl_scf;
VLC     ff_dca_vlc_damp;
VLC     ff_dca_vlc_dph;
VLC     ff_dca_vlc_fst_rsd_amp;
VLC     ff_dca_vlc_rsd_apprx;
VLC     ff_dca_vlc_rsd_amp;
VLC     ff_dca_vlc_avg_g3;
VLC     ff_dca_vlc_st_grid;
VLC     ff_dca_vlc_grid_2;
VLC     ff_dca_vlc_grid_3;
VLC     ff_dca_vlc_rsd;

av_cold void ff_dca_init_vlcs(void)
{
    static VLCElem dca_table[30218];
    const uint8_t (*src_table)[2] = ff_dca_vlc_src_tables;
    unsigned offset = 0;

#define DCA_INIT_VLC(vlc, nb_bits, nb_codes, entry_offset)                  \
    do {                                                                    \
        vlc.table           = &dca_table[offset];                           \
        vlc.table_allocated = FF_ARRAY_ELEMS(dca_table) - offset;           \
        ff_vlc_init_from_lengths(&vlc, nb_bits, nb_codes, &src_table[0][1], 2, \
                                 &src_table[0][0], 2, 1, entry_offset,      \
                                 VLC_INIT_STATIC_OVERLONG, NULL);           \
        offset += vlc.table_size;                                           \
        src_table += nb_codes;                                              \
    } while (0)

    for (unsigned i = 0; i < DCA_CODE_BOOKS; i++) {
        for (unsigned j = 0; j < ff_dca_quant_index_group_size[i]; j++)
            DCA_INIT_VLC(ff_dca_vlc_quant_index[i][j], bitalloc_maxbits[i][j],
                         ff_dca_bitalloc_sizes[i], ff_dca_bitalloc_offsets[i]);
    }

    for (unsigned i = 0; i < FF_ARRAY_ELEMS(ff_dca_vlc_bit_allocation); i++)
        DCA_INIT_VLC(ff_dca_vlc_bit_allocation[i], bitalloc_12_vlc_bits[i], 12, 1);

    for (unsigned i = 0; i < FF_ARRAY_ELEMS(ff_dca_vlc_scale_factor); i++)
        DCA_INIT_VLC(ff_dca_vlc_scale_factor[i], DCA_SCALES_VLC_BITS, 129, -64);

    for (unsigned i = 0; i < FF_ARRAY_ELEMS(ff_dca_vlc_transition_mode); i++)
        DCA_INIT_VLC(ff_dca_vlc_transition_mode[i], DCA_TMODE_VLC_BITS, 4, 0);

#define LBR_INIT_VLC(vlc, nb_bits, nb_codes, entry_offset)              \
    do {                                                                \
        vlc.table           = &dca_table[offset];                       \
        vlc.table_allocated = FF_ARRAY_ELEMS(dca_table) - offset;       \
        ff_vlc_init_from_lengths(&vlc, nb_bits, nb_codes, &src_table[0][1], 2, \
                                 &src_table[0][0], 2, 1, entry_offset,  \
                                 VLC_INIT_STATIC_OVERLONG | VLC_INIT_LE,\
                                 NULL);                                 \
        offset += vlc.table_size;                                       \
        src_table += nb_codes;                                          \
    } while (0)

    for (unsigned i = 0; i < FF_ARRAY_ELEMS(ff_dca_vlc_tnl_grp); i++)
        LBR_INIT_VLC(ff_dca_vlc_tnl_grp[i], DCA_TNL_GRP_VLC_BITS, tnl_grp_sizes[i], -1);
    LBR_INIT_VLC(ff_dca_vlc_tnl_scf,     DCA_TNL_SCF_VLC_BITS,   20, -1);
    LBR_INIT_VLC(ff_dca_vlc_damp,        DCA_DAMP_VLC_BITS,       7, -1);
    LBR_INIT_VLC(ff_dca_vlc_dph,         DCA_DPH_VLC_BITS,        9, -1);
    LBR_INIT_VLC(ff_dca_vlc_fst_rsd_amp, DCA_FST_RSD_VLC_BITS,   24, -1);
    LBR_INIT_VLC(ff_dca_vlc_rsd_apprx,   DCA_RSD_APPRX_VLC_BITS,  6, -1);
    LBR_INIT_VLC(ff_dca_vlc_rsd_amp,     DCA_RSD_AMP_VLC_BITS,   33, -1);
    LBR_INIT_VLC(ff_dca_vlc_avg_g3,      DCA_AVG_G3_VLC_BITS,    18, -1);
    LBR_INIT_VLC(ff_dca_vlc_st_grid,     DCA_ST_GRID_VLC_BITS,   22, -1);
    LBR_INIT_VLC(ff_dca_vlc_grid_2,      DCA_GRID_VLC_BITS,      20, -1);
    LBR_INIT_VLC(ff_dca_vlc_grid_3,      DCA_GRID_VLC_BITS,      13, -1);
    LBR_INIT_VLC(ff_dca_vlc_rsd,         DCA_RSD_VLC_BITS,        9,  0);
}
